package com.view;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import com.model.Cliente;

@ManagedBean
@ViewScoped
@SuppressWarnings("serial")
public class OrdenDeCompraView implements Serializable {

	private Long id;
	private Long numeroOrdenDeCompra;
	private ProveedorView proveedorView;
	private List<OrdenDeCompraDetalleView> listaDetalleOrdenDeCompraView;	
	private Date fechaOrdenDeCompra;
	private String estado;
	private Date fechaCreadaOrdenDeCompra;
	private Date fechaAutorizadaOrdenDeCompra;
	private Date fechaCierreOrdenDeCompra;
	private List<RemitoView> listaDeRemitos;
	private RemitoView remitoView;
	private ClienteView clienteView;
//	private DepositoView depositoView;
	private BigDecimal total;
	private BigDecimal totalRecepcionado;
	
	public OrdenDeCompraView(Long id, Long numeroOrdenDeCompra, ProveedorView proveedorView, List<OrdenDeCompraDetalleView> listaDetalleOrdenDeCompraview,
					Date fechaOrdenDeCompra, String estado, Date fechaCreadaOrdenDeCompra, Date fechaAutorizadaOrdenDeCompra,
					Date fechaCierreOrdenDeCompra, List<RemitoView> listaDeRemitos, ClienteView clienteView, BigDecimal total, BigDecimal totalRecepcionado) {
		this.id = id;
		this.numeroOrdenDeCompra = numeroOrdenDeCompra;
		this.proveedorView = proveedorView;
		this.listaDetalleOrdenDeCompraView = listaDetalleOrdenDeCompraview;
		this.fechaOrdenDeCompra = fechaOrdenDeCompra;
		this.estado = estado;
		this.fechaAutorizadaOrdenDeCompra = fechaAutorizadaOrdenDeCompra;
		this.fechaCreadaOrdenDeCompra = fechaCreadaOrdenDeCompra;
		this.fechaCierreOrdenDeCompra = fechaCierreOrdenDeCompra;
		this.listaDeRemitos = listaDeRemitos;
		this.clienteView = clienteView;
//		this.depositoView = depositoView;
		this.total = total;
		this.totalRecepcionado = totalRecepcionado;
	}

	public OrdenDeCompraView() {
		this(null, null, new ProveedorView(), 
				null, null, null, null, null, null, new ArrayList<RemitoView>(), new ClienteView(), BigDecimal.ZERO, BigDecimal.ZERO);
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Long getNumeroOrdenDeCompra() {
		return numeroOrdenDeCompra;
	}

	public void setNumeroOrdenDeCompra(Long numeroOrdenDeCompra) {
		this.numeroOrdenDeCompra = numeroOrdenDeCompra;
	}

	public ProveedorView getProveedorView() {
		return proveedorView;
	}

	public void setProveedorView(ProveedorView proveedorView) {
		this.proveedorView = proveedorView;
	}

	public List<OrdenDeCompraDetalleView> getListaDetalleOrdenDeCompraView() {
		return listaDetalleOrdenDeCompraView;
	}

	public void setListaDetalleOrdenDeCompraView(
			List<OrdenDeCompraDetalleView> listaDetalleOrdenDeCompraView) {
		this.listaDetalleOrdenDeCompraView = listaDetalleOrdenDeCompraView;
	}

	public Date getFechaOrdenDeCompra() {
		return fechaOrdenDeCompra;
	}

	public void setFechaOrdenDeCompra(Date fechaOrdenDeCompra) {
		this.fechaOrdenDeCompra = fechaOrdenDeCompra;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public Double getGranTotalCantidad ()
	{
		Double retorno = 0D;
		if (this.listaDetalleOrdenDeCompraView!=null){
			for (OrdenDeCompraDetalleView ocd : this.listaDetalleOrdenDeCompraView){
				retorno = retorno + ocd.getCantidad();
			}
		}
		return retorno;
	}

	@SuppressWarnings("null")
	public BigDecimal getGranTotalPrecio ()
	{
		BigDecimal suma = BigDecimal.ZERO;
		BigDecimal valor = BigDecimal.ZERO;
		if (this.listaDetalleOrdenDeCompraView!=null){
			for (OrdenDeCompraDetalleView ocd : this.listaDetalleOrdenDeCompraView){
				valor = ocd.getPrecio().multiply(BigDecimal.valueOf(ocd.getCantidad())) ;
				suma = suma.add(valor);
			}
		}
		return suma.setScale(2);
	}

	public Date getFechaCreadaOrdenDeCompra() {
		return fechaCreadaOrdenDeCompra;
	}

	public void setFechaCreadaOrdenDeCompra(Date fechaCreadaOrdenDeCompra) {
		this.fechaCreadaOrdenDeCompra = fechaCreadaOrdenDeCompra;
	}

	public Date getFechaAutorizadaOrdenDeCompra() {
		return fechaAutorizadaOrdenDeCompra;
	}

	public void setFechaAutorizadaOrdenDeCompra(Date fechaAutorizadaOrdenDeCompra) {
		this.fechaAutorizadaOrdenDeCompra = fechaAutorizadaOrdenDeCompra;
	}

	public Date getFechaCierreOrdenDeCompra() {
		return fechaCierreOrdenDeCompra;
	}

	public void setFechaCierreOrdenDeCompra(Date fechaCierreOrdenDeCompra) {
		this.fechaCierreOrdenDeCompra = fechaCierreOrdenDeCompra;
	}

	public List<RemitoView> getListaDeRemitos() {
		return listaDeRemitos;
	}

	public void setListaDeRemitos(List<RemitoView> listaDeRemitos) {
		this.listaDeRemitos = listaDeRemitos;
	}

	public RemitoView getRemitoView() {
		return remitoView;
	}

	public void setRemitoView(RemitoView remitoView) {
		this.remitoView = remitoView;
	}

	public ClienteView getClienteView() {
		return clienteView;
	}

	public void setClienteView(ClienteView clienteView) {
		this.clienteView = clienteView;
	}

	public BigDecimal getTotal() {
		return total;
	}

	public void setTotal(BigDecimal total) {
		this.total = total;
	}

	public BigDecimal getTotalRecepcionado() {
		return totalRecepcionado;
	}

	public void setTotalRecepcionado(BigDecimal totalRecepcionado) {
		this.totalRecepcionado = totalRecepcionado;
	}

}
